<?php
namespace App\Http\Controllers\Api;

use App\Http\Controllers\Controller as BaseController;
use App\Models\SmscodeLog;
use Illuminate\Http\Request;
use Auth;
use App\Models\SmsCode;
use App\Services\Sms\Smser as Sms;

/**
 * 短信
 *
 * @author Miluo Huang
 */
class CaptchaController extends BaseController
{
    public function __construct(Request $request)
    {
        $this->middleware('json');
    }

	/**
	 * 获取短信验证码
	 *
	 * @param string $mobile
	 */
	public function getSmsVcode(Request $request)
	{
		// 验证输入。
		$this->validate($request, [
			'mobile' => [
				'required',
				'mobile'
			]
		],[
			'mobile.required' => '请填写手机号',
		    'mobile.mobile' => '请填写正确格式的手机号'
		]);


		$mobile = $request->input('mobile');

		$sms_code = SmscodeLog::where('mobile',$mobile)->where('status',0)->first();

		if(is_null($sms_code)){
			// 生成一个6位的数字验证码。
			$vcode = sprintf('%06d', mt_rand(0, 999999));
			$sms_code = new SmscodeLog();
			$sms_code->code = $vcode;
			$sms_code->mobile = $mobile;
			$sms_code->save();
		}else{
			if(strtotime($sms_code->created_at)+60 > (time())){
				return response('60秒内不能重复获取短信！','402');
			}
			$vcode = $sms_code->code;
		}

		// 如果不是单元测试环境，发送短信到手机。
 		if (! app()->runningUnitTests() && (!env('APP_DEBUG') || !env('SMS_SEND'))) {
			$sms = new Sms();
			$sms->send($mobile, '验证码：' . $vcode . '。');
 		}


		// 返回成功信息。
		return null;
	}

	/**
	 * 通过检查短信验证码
	 */
	public function checkSmsVcode(Request $request)
	{
		// 验证输入。
		$this->validate($request, [
			'mobile' => [
				'required',
				'mobile'
			],
			'smsvcode' => [
				'required',
				'smsvcode:mobile,keep'
			]
		]);

		// 验证通过。
		return null;
	}
}
